<?php
App::uses('AppController', 'Controller');
/**
 * Livros Controller
 *
 * @property Livro $Livro
 */
class LivrosController extends AppController {

	var $components = array('buscador');
	var $helpers = array('BarCode');
	
	public function beforeFilter(){
		parent::beforeFilter();
		$this->Auth->allow('lista', 'info');
	}	
	
	public function lista() {
		if(empty($this->request->data)){
			if(!$this->Session->check('conditions'))
				$this->Session->write('conditions', array());
			$this->Livro->recursive = 0;
			$this->paginate = array('order'=>'Assunto1.codigo_prefix, codigo ASC', 'conditions'=>$this->Session->read('conditions'));
			$this->set('livros', $this->paginate());
			$this->request->data = $this->Session->read('request');
		}
		else{
			$this->buscador->buscaCompleta($this->request->data['Livro']);
			$this->buscador->addCriterio('Editora.nome', $this->request->data['Editora']['nome']);
			$conditions = $this->buscador->returnCriterio();
			$this->Session->write('conditions', $conditions);
			$this->paginate = array('conditions'=>$conditions);
			$this->Session->write('request', $this->request->data);
			$this->set('livros', $this->paginate());
		}
		$assuntos = $this->Livro->Assunto1->find('list', array('order'=>'assunto'));
		$editoras = $this->Livro->Editora->find('list');
		$this->set(compact('assuntos', 'editoras'));
	}

/**
 * view method
 *
 * @param string $id
 * @return void
 */
	public function info($id = null) {
		$this->Livro->id = $id;
		if (!$this->Livro->exists()) {
			throw new NotFoundException(__('Livro inválido'));
		}
		$data = $this->Livro->read(null, $id);
		$this->Livro->visualizacao($data['Livro']['visualizacoes']);
		$this->set('livro', $data);
		$this->loadModel('Aluno');
		$this->set('alunos', $this->Aluno->find('list'));
	}

/**
 * add method
 *
 * @return void
 */
	public function novo() {
		if(!$this->admin()){
			throw new MethodNotAllowedException(__('Opção inválida'));
		}
		if ($this->request->is('post')) {
			$editora = $this->Livro->Editora->findByNome($this->request->data['Livro']['editora']);
			if(!$editora){
				$this->Session->setFlash(__('Editora inválida!'));
			}
			else{
				$this->request->data['Livro']['editora_id'] = $editora['Editora']['id'];
				$this->Livro->create();
				if(empty($this->request->data['Livro']['codigo'])){
					$this->request->data['Livro']['codigo'] =
						$this->Livro->novoCodigo($this->request->data['Livro']['assunto1']);
					
				}
				if ($this->Livro->save($this->request->data)) {
					$this->Session->setFlash(__('Livro salvo com sucesso!'));
					$this->redirect(array('action' => 'lista'));
				} else {
					$this->Session->setFlash(__('Livro Não pode ser salvo. Por favor tente novamente'));
				}
			}
		}
		$assuntos = $this->Livro->Assunto1->find('list', array('order'=>'assunto'));
		$editoras = $this->Livro->Editora->find('list');
		$this->set(compact('assuntos', 'editoras'));
	}

/**
 * edit method
 *
 * @param string $id
 * @return void
 */
	public function editar($id = null) {
		if(!$this->admin()){
			throw new MethodNotAllowedException(__('Opção inválida'));
		}
		$this->Livro->id = $id;
		$this->Livro->recursive = -1;
		$livro = $this->Livro->findByIdLivros($id);
		$this->Livro->recursive = 0;
		if (!$this->Livro->exists()) {
			throw new NotFoundException(__('Livro inválido'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			$editora = $this->Livro->Editora->findByNome($this->request->data['Livro']['editora']);
			if(!$editora){
				$this->Session->setFlash(__('Editora inválida!'));
				$this->request->data['Editora']['nome'] = $this->request->data['Livro']['editora'];
			}
			else{
				if($livro['Livro']['codigo'] == $this->request->data['Livro']['codigo'])
					unset($this->request->data['Livro']['codigo']);
				$this->request->data['Livro']['editora_id'] = $editora['Editora']['id'];
				if ($this->Livro->save($this->request->data)) {
					$this->Session->setFlash(__('Livro foi salvo'));
					$this->redirect(array('action' => 'info', $this->Livro->id));
				} else {
					$this->Session->setFlash(__('Livro não foi salvo. Por favor tente novamente.'));
					$this->request->data['Editora']['nome'] = $this->request->data['Livro']['editora'];
				}
			}
		} else {
			$this->request->data = $this->Livro->read(null, $id);
		}
		$assuntos = $this->Livro->Assunto1->find('list', array('order'=>'assunto'));
		$editoras = $this->Livro->Editora->find('list');
		$this->set(compact('assuntos', 'editoras'));
	}

	public function apagar($id = null) {
		if(!$this->admin()){
			throw new MethodNotAllowedException(__('Opção inválida'));
		}
		if (!$this->request->is('post')) {
			throw new MethodNotAllowedException();
		}
		$this->Livro->id = $id;
		if (!$this->Livro->exists()) {
			throw new NotFoundException(__('Livro inválido'));
		}
		if ($this->Livro->delete()) {
			$this->Session->setFlash(__('Livro excluído'));
			$this->redirect(array('action'=>'lista'));
		}
		$this->Session->setFlash(__('Livro não foi excluído'));
		$this->redirect(array('action' => 'lista'));
	}
	
	public function etiquetas($idLivro){
		if(!$this->admin()){
			throw new MethodNotAllowedException(__('Opção inválida'));
		}
		$this->Livro->id = $idLivro;
		if (!$this->Livro->exists()) {
			throw new NotFoundException(__('Livro inválido'));
		}
		$this->set('livro', $this->Livro->read(null, $idLivro));
		if(!empty($this->request->data)){
			$this->set('etiquetas', $this->request->data);
			$this->render('imprime_etiquetas');
		}
	}
	
	public function adiciona_colecao(){
		if(!$this->admin()){
			throw new MethodNotAllowedException(__('Opção inválida'));
		}
		if ($this->request->is('post')) {
			$editora = $this->Livro->Editora->findByNome($this->request->data['Livro']['editora']);
			if(!$editora){
				$this->Session->setFlash(__('Editora inválida!'));
			}
			else{
				$this->request->data['Livro']['editora_id'] = $editora['Editora']['id'];
				$this->Livro->create();
				for($i=0;$i<$this->request->data['volumes'];$i++){
					$save[$i]['Livro'] = $this->request->data['Livro'];
					$save[$i]['Livro']['titulo'] .= " Vol. ".($i+1);
					if(empty($save[$i]['Livro']['codigo'])){
						$save[$i]['Livro']['codigo'] =
							$this->Livro->novoCodigo($save[$i]['Livro']['assunto1']) + $i;
					}
				}
					if ($this->Livro->saveAll($save)) {
						$this->Session->setFlash(__('Coleção salva com sucesso!'));
						$this->redirect(array('action' => 'lista'));
					} else {
						$this->Session->setFlash(__('Coleção pode ser salva. Por favor tente novamente'));
					}
			}
		}
		$assuntos = $this->Livro->Assunto1->find('list');
		$editoras = $this->Livro->Editora->find('list');
		$this->set(compact('assuntos', 'editoras'));
	}
}
